#include "CMagicDoorCfg.h"
#include "commerrno.h"

int CMagicDoorConfig::AddLevelConfig(CMagicDoorLevelCfgData& stCfgData)
{
    if (!stCfgData.IsValidLevel())
    {
        return ERROR_MAGIC_DOOR_LEVEL;
    }

    if (_astLevelConfig[stCfgData.GetLevel()].IsValidLevel()) 
    {
        return ERROR_MAGIC_DOOR_LEVEL_DUPLICATED_CONFIG;
    }

    _astLevelConfig[stCfgData.GetLevel()] = stCfgData;

    return 0;
}

int CMagicDoorConfig::FindLevelConfig(int iLevel)
{
    if (iLevel > MAGIC_DOOR_MAX_LEVEL || iLevel < 0)
    {
        return -1;//因为返回下标 所以这里必须返回负数
    }

    if (!_astLevelConfig[iLevel].IsValidLevel()) 
    {
        return -1;//因为返回下标 所以这里必须返回负数
    }

    if (iLevel != _astLevelConfig[iLevel].GetLevel())
    {
        return -1;//因为返回下标 所以这里必须返回负数
    }

    return iLevel;
}

CMagicDoorLevelCfgData& CMagicDoorConfig::GetLevelConfig(int iIndex)
{
    return _astLevelConfig[iIndex];
}

int CMagicDoorConfig::AddConsumeConfig(CMagicDoorConsumeCfgData& stCfgData)
{
    if (!stCfgData.IsValidTime())
    {
        return ERROR_CONTRIBUTE_TIMES;
    }

    if (_astConsumeConfig[stCfgData.GetTimes() - 1].IsValidTime()) 
    {
        return ERROR_CONSUME_CONTRI_DUPLICATED_CONFIG;
    }

    _astConsumeConfig[stCfgData.GetTimes() - 1] = stCfgData;

    return 0;
}

int CMagicDoorConfig::FindConsumeConfig(int iTimes)
{
    if (iTimes > MAGIC_DOOR_MAX_PAY_TIMES || iTimes <= 0)
    {
        return -1;//因为返回下标 所以这里必须返回负数
    }

    if (!_astConsumeConfig[iTimes - 1].IsValidTime()) 
    {
        return -1;//因为返回下标 所以这里必须返回负数
    }

    if (iTimes != _astConsumeConfig[iTimes - 1].GetTimes())
    {
        return -1;//因为返回下标 所以这里必须返回负数
    }

    return iTimes - 1;
}

CMagicDoorConsumeCfgData& CMagicDoorConfig::GetConsumeConfig(int iIndex)
{
    return _astConsumeConfig[iIndex];
}

